﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using System;
using System.Collections.Generic;

namespace CuocChienQueNha.Class.MapClass
{
    public class Map
    {
        private int[,] map; // map hiện hành (1 đường đi, 0 đặt tháp, 2 không động)
        private Texture2D image;
        private int level;
        private Random rand;
        private List<Vector2> starts;

        public Map() { }
        public Map(int level)
        {
            starts = new List<Vector2>();
            this.level = level;
            switch (this.level)
            {
                case 1:
                    {
                        #region
                        map = new int[12, 20]
                            {
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
                                {1,1,1,1,0,2,2,0,2,0,2,2,2,2,2,2,2,2,2,2},
                                {2,2,0,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2},
                                {2,2,2,1,0,1,2,2,0,1,2,2,0,2,2,2,2,2,2,2},
                                {2,2,1,1,2,1,0,1,1,1,2,1,1,1,2,2,2,2,2,2},
                                {2,2,1,2,2,1,2,1,0,2,2,1,0,1,0,2,2,2,2,2},
                                {2,2,1,0,2,1,2,1,1,1,1,1,2,1,2,2,2,2,2,2},
                                {2,2,1,1,1,1,2,0,2,2,2,2,2,1,2,2,2,2,2,2},
                                {2,2,0,2,0,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1},
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2},
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
                            };
                        starts.Add(new Vector2(2, 0));
                        break;
                        #endregion
                    }
                case 2:
                    {
                        #region
                        map = new int[12, 20]
                            {
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
                                {2,2,2,2,2,2,2,0,2,2,2,2,2,2,0,2,0,2,2,2},
                                {2,2,2,2,2,2,1,1,1,0,2,2,2,1,1,1,1,1,1,1},
                                {2,2,2,2,2,2,1,0,1,2,2,2,2,1,2,0,2,2,2,2},
                                {1,1,1,1,1,1,1,2,1,2,2,2,0,1,2,2,2,2,2,2},
                                {2,2,2,2,0,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2},
                                {2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,2,2,2,2,2},
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
                                {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
                            };
                        starts.Add(new Vector2(5, 0));
                        break;
                        #endregion
                    }
                default:
                    {
                        break;
                    }
            }
        }//ok
        public int[,] getMap()
        {
            return map;
        }
        public void Load(ContentManager content)
        {
            image = content.Load<Texture2D>("Images/Map/" + level.ToString());
        }
        public void Draw(SpriteBatch sprite)
        {
            sprite.Draw(image, Vector2.Zero, Color.White);
        }
        public int countCellAvailable()
        {
            int count = 0;
            for (int i = 0; i < 12; i++)
            {
                for (int j = 0; j < 20; j++)
                {
                    if (map[i, j] == 0) count++;
                }
            }
            return count;
        }//ok
        public string XacDinhHuong()
        {
            return "Right";
        }//ok
        public string XacDinhRe(int level, Vector2 index, string huong)
        {
            rand = new Random();
            switch (GamePage.level)
            {
                case 1: break;
                default: break;
            }
            return huong;
        }
        public Vector2 getBeGin()
        {
            rand = new Random();
            int temp = rand.Next(10000) % starts.Count;
            return starts[temp];
        }//ok
    }
}
